home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Memphis Amiga Group / MAG Disk (1990-09)(Memphis Amiga Group).zip / MAG Disk (1990-09)(Memphis Amiga Group).adf / sMOVIE / source / sMOVIEargs.c < prev    next >
C/C++ Source or Header  |  1989-12-29  |  2KB  |  89 lines

  1. /*    Reads arguments from CLI or Workbench, and calls sMOVIE's parser
  2.     to act on the specified files.
  3.     
  4.     Martin J. Round 16-Oct-89
  5. */
  6.  
  7. #include "sMOVIE.h"
  8.  
  9. extern void parse (FILE *,int);
  10.  
  11. extern void message (UBYTE *);
  12.  
  13. extern void print (char *);
  14.  
  15. extern void free_memory (int);
  16.  
  17. extern int runningfromcli;
  18.  
  19. extern char line[MAXLINE + 1], buff[MAXLINE * 2];
  20.  
  21. extern struct WBStartup *WBenchMsg;
  22.  
  23. FILE *fp, *fopen();
  24.  
  25. BPTR olddir;
  26.  
  27. void argread (argc, argv, pass)
  28. int argc;    
  29. char **argv;
  30. int pass;
  31.  
  32. {
  33.     int i;
  34.     
  35.     /*    Check we've got something to do    */
  36.     if (runningfromcli && argc == 1) {
  37.         print("Useage:  sMOVIE filename [filename]....\n");
  38.         free_memory(4);
  39.         exit(0L);
  40.         }
  41.  
  42.     if (!runningfromcli &&
  43.         ((WBenchMsg == NULL) || (WBenchMsg->sm_NumArgs < 2))) {
  44.             message ("You must click on a project - try 'sMOVIE.readme'.");
  45.             free_memory(4);
  46.             exit(0L);
  47.             }
  48.  
  49.     /*    process config file first (if it exists)    */
  50.     /*    look first in root dir if fail try s:        */
  51.  
  52.     if ((fp = fopen(CONFIGFILENAME1,"r")) ||
  53.         (fp = fopen(CONFIGFILENAME2,"r"))) {
  54.         parse(fp,pass);
  55.         fclose(fp);
  56.         }
  57.  
  58.     if (runningfromcli) {
  59.         for (i=1; i<argc; i++) {
  60.             if ((fp = fopen(argv[i],"r")) == NULL) {
  61.                 if (pass == 0) {
  62.                     sprintf(buff,"Can't open file: %s\n",argv[i]);
  63.                     print(buff);
  64.                     }
  65.                 }
  66.             else {
  67.                 parse(fp,pass);
  68.                 fclose(fp);
  69.                 }
  70.             }
  71.         }
  72.     else {    /*    running from Workbench    */
  73.         for (i=1; i<WBenchMsg->sm_NumArgs; i++) {
  74.             olddir = CurrentDir (WBenchMsg->sm_ArgList[i].wa_Lock);
  75.             if ((fp = fopen(WBenchMsg->sm_ArgList[i].wa_Name,"r")) == NULL) {
  76.                 if (pass == 0) {
  77.                     sprintf(buff,"Can't open file: %s",
  78.                         WBenchMsg->sm_ArgList[i].wa_Name);
  79.                     message(buff);
  80.                     }
  81.                 }
  82.             else {
  83.                 parse(fp,pass);
  84.                 fclose(fp);
  85.                 }
  86.             if (olddir) CurrentDir(olddir);
  87.             }
  88.         }
  89. }